/*
 * 数据结构：图，邻接矩阵测试
 * 
*/
#pragma once
#include <iostream>
#include <vector>
#include "graph_adjacency_matrix.h"

/* 基于邻接矩阵实现的无向图类 */
class GraphAdjMatTest
{
  public:  
      void Test()
      {
		  /* 初始化无向图 */
		  // 请注意，edges 元素代表顶点索引，即对应 vertices 元素索引
		  std::vector<int> vertices = { 1, 3, 2, 5, 4 };
		  std::vector<std::vector<int>> edges = { {0, 1}, {0, 3}, {1, 2}, {2, 3}, {2, 4}, {3, 4} };
		  GraphAdjMat graph(vertices, edges);
		  std::cout << "\n 初始化后,图为: " << std::endl;
		  graph.print();

		  /* 添加边 */
		  // 顶点 1, 2 的索引分别为 0, 2
		  graph.addEdge(0, 2);
		  std::cout << "\n添加边 1-2 后，图为" << std::endl;
		  graph.print();

		  /* 删除边 */
		  // 顶点 1, 3 的索引分别为 0, 1
		  graph.removeEdge(0, 1);
		  std::cout << "\n删除边 1-3 后，图为" << std::endl;
		  graph.print();

		  /* 添加顶点 */
		  graph.addVertex(6);
		  std::cout << "\n添加顶点 6 后，图为" << std::endl;
		  graph.print();

		  /* 删除顶点 */
		  // 顶点 3 的索引为 1
		  graph.removeVertex(1);
		  std::cout << "\n删除顶点 3 后，图为" << std::endl;
		  graph.print();
      }

};